package com.young.design.pattern.factory.simple;

import com.young.design.pattern.factory.Shape;
import com.young.design.pattern.factory.SquareShapeImpl;
import com.young.design.pattern.factory.TriangleShapeImpl;

/**
 * @ClassName : ShapeFactory
 * @Author : hyy
 * @Date: 2020-03-16
 * 简单工厂模式/静态工厂模式
 *
 * 优点：
 *  1、最大的优势在于可以根据配置文件进行动态的创建不同的对象而不用去修改源代码
 *  2、分离对象的创建和使用过程
 * 缺点：
 *  1、将对象实例交给工厂来创建，一旦工厂倒闭，那么可能导致整个系统的不可用
 *  2、若新增类型，则需要修改工厂类的代码，违反开闭原则
 */
public class ShapeFactory {
    public static Shape getShape(String type){
        switch (type){
            case "triangle":
                return new TriangleShapeImpl();
            case "square":
                return new SquareShapeImpl();
            default:
                return null;
        }

    }
}
